package br.com.saeng2D.objeto.apoio;

import java.awt.BasicStroke;
import java.awt.Graphics2D;
import java.awt.Stroke;

import br.com.saeng2D.objeto.AbstratoObjeto;
import br.com.saeng2D.objeto.animado.Associacao;
import br.com.saeng2D.objeto.animado.VetorAnimado;
import br.com.saeng2D.util.Util;

public class Apoio1 extends AbstratoApoio {

	public Apoio1(int x, int y) {
		super("apoio1", x, y);
		inicializacao();
		this.corFundo = Util.getCor("cor_apoio1");
	}

	public void inicializacao() {
		vetores = new VetorAnimado[5];
		vetores[0] = new VetorAnimado( 34.0f, -20.0f, false, false);
		vetores[1] = new VetorAnimado(-34.0f, -20.0f, false, false);
		vetores[2] = new VetorAnimado(  0.0f,  30.0f, false,  true);
		vetores[3] = new VetorAnimado( 34.0f, -14.0f, false, false);
		vetores[4] = new VetorAnimado(-34.0f, -14.0f, false, false);

		vetorReferencia = vetores[2];

		associacoes = new Associacao[4];
		associacoes[0] = new Associacao(vetores[3], vetores[2]);
		associacoes[1] = new Associacao(vetores[4], vetores[2]);
		associacoes[2] = new Associacao(vetores[4], vetores[3]);
		associacoes[3] = new Associacao(vetores[1], vetores[0]);
	}

	public void reassociar() {
		vetorReferencia = vetores[2];

		associacoes = new Associacao[4];
		associacoes[0] = new Associacao(vetores[3], vetores[2]);
		associacoes[1] = new Associacao(vetores[4], vetores[2]);
		associacoes[2] = new Associacao(vetores[4], vetores[3]);
		associacoes[3] = new Associacao(vetores[1], vetores[0]);
	}	
	public AbstratoObjeto prototipo() {
		Apoio1 apoio = new Apoio1(x, y);
		apoio.vetores = vetores;
		apoio.associacoes = associacoes;
		apoio.vetorReferencia = vetorReferencia;
		return apoio;
	}
	
	public void desenhar(Graphics2D g2) {
		if(!isVisivel()) {
			return;
		}
		g2.setStroke(AbstratoObjeto.LARGURA_LINHA_ABSTRATO_OBJETO);
		if (selecionado) {
			g2.setColor(corSelecionado);
		} else {
			g2.setColor(corFundo);
		}
		desenhar(g2, associacoes[0]);
		desenhar(g2, associacoes[1]);
		g2.setStroke(stroke1);
		desenhar(g2, associacoes[2]);
		g2.setStroke(stroke2);
		desenhar(g2, associacoes[3]);
	}
	
	private Stroke stroke1 = new BasicStroke(3, 0, 0, 1, new float[] { 3, 3 }, 0); 
	private Stroke stroke2 = new BasicStroke(5, 0, 0, 1, new float[] { 1, 2 }, 0); 
}